#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<iostream>
#include<vector>
#include <ctime>
#include <conio.h>
using namespace std;

// 坐标属性
struct point
{
    int x;
    int y;
};

// 蛇的属性
struct Snake
{
    vector <point> xy;			// 每节坐标
    point next;					// 为下一节预留的位置
    vector <QColor> color;      // 每节颜色
    int num;					// 长度
    int position;				// 方向
};

// 食物的属性
struct Food
{
    point fdxy[10];			// 坐标
    int grade;				// 分数
    int num = 1;			// 食物总数
    QColor color[10];		// 食物颜色
};

enum position { Up, Down, Left, Right,None };		// 枚举蛇的方向

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
protected:
    //重载
    void paintEvent(QPaintEvent *event);//画蛇
    void keyPressEvent(QKeyEvent *event);//监测键盘
private:
    void initSnake();
    void initFood(int num);
    int snakeTag=0;
    void drawSnake();
    int foodTag=0;
    void drawFood();
    void moveSnake();
    void eatFood();
    int gradeTag=0;
    void showgrade();
    int overTag=0;
    bool gameOver();
    QTimer *timer;
private slots:
    void Snake_update();
};

#endif // WIDGET_H
